<!DOCTYPE html>


<html lang="zh-CN">
  

    <head>
      <meta charset="utf-8" />
       
      <meta name="keywords" content="陈亚东 cyd 凤舞神者" />
       
      <meta name="description" content="85年的精神小伙,不是神者有点神经,水尿吧汤 " />
      
      <meta
        name="viewport"
        content="width=device-width, initial-scale=1, maximum-scale=1"
      />
      <title>电池管理系统BMS知识与功能入门篇 |  风舞神者</title>
  <meta name="generator" content="hexo-theme-ayer">
      
      <link rel="shortcut icon" href="/favicon.ico" />
       
<link rel="stylesheet" href="/dist/main.css">

      
<link rel="stylesheet" href="/css/fonts/remixicon.css">

      
<link rel="stylesheet" href="/css/custom.css">
 
      <script src="https://cdn.staticfile.org/pace/1.2.4/pace.min.js"></script>
       
 

      <link
        rel="stylesheet"
        href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-bulma@5.0.1/bulma.min.css"
      />
      <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.19/dist/sweetalert2.min.js"></script>

      <!-- mermaid -->
      
      <style>
        .swal2-styled.swal2-confirm {
          font-size: 1.6rem;
        }
      </style>
    </head>
  </html>
</html>


<body>
  <div id="app">
    
      
    <main class="content on">
      <section class="outer">
  <article
  id="post-电池管理系统BMS知识与功能入门篇"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h1 class="article-title sea-center" style="border-left:0" itemprop="name">
  电池管理系统BMS知识与功能入门篇
</h1>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/07/07/%E7%94%B5%E6%B1%A0%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9FBMS%E7%9F%A5%E8%AF%86%E4%B8%8E%E5%8A%9F%E8%83%BD%E5%85%A5%E9%97%A8%E7%AF%87/" class="article-date">
  <time datetime="2023-07-07T02:11:37.000Z" itemprop="datePublished">2023-07-07</time>
</a>   
<div class="word_count">
    <span class="post-time">
        <span class="post-meta-item-icon">
            <i class="ri-quill-pen-line"></i>
            <span class="post-meta-item-text"> 字数统计:</span>
            <span class="post-count">7.4k</span>
        </span>
    </span>

    <span class="post-time">
        &nbsp; | &nbsp;
        <span class="post-meta-item-icon">
            <i class="ri-book-open-line"></i>
            <span class="post-meta-item-text"> 阅读时长≈</span>
            <span class="post-count">25 分钟</span>
        </span>
    </span>
</div>
 
    </div>
      
    <div class="tocbot"></div>




  
    <div class="article-entry" itemprop="articleBody">
       
  <p><img src="https://cydmacro.gitee.io/myblog/img/v2-2411fcf6dd068a54b578745424d6335b_1440w-20230707101304840.jpeg" alt="img"></p>
<h2 id="1-什么是BMS？"><a href="#1-什么是BMS？" class="headerlink" title="1)什么是BMS？"></a><strong>1)什么是BMS？</strong></h2><p>BMS全称是Battery Management System，<strong>电池管理系统</strong>。它是配合监控储能电池状态的设备，主要就是为了智能化管理及维护各个电池单元，防止电池出现过充电和过放电，延长电池的使用寿命，监控电池的状态。一般BMS表现为一块电路板，或者一个硬件盒子。</p>
<p><img src="https://cydmacro.gitee.io/myblog/img/v2-f435eae429316c963c598b31cfb8072f_1440w-20230707101321322.webp" alt="img"></p>
<p><img src="https://pic4.zhimg.com/80/v2-863ad27c511f3782d07346cec5c6caa3_1440w.webp" alt="img"></p>
<p>BMS是电池储能系统的核心子系统之一，负责监控电池储能单元内各电池运行状态，保障储能单元安全可靠运行。BMS能够实时监控、采集储能电池的状态参数（包括但不限于单体电池电压、电池极柱温度、电池回路电流、电池组端电压、电池系统绝缘电阻等），并对相关状态参数进行必要的分析计算，得到更多的系统状态评估参数，并根据特定保护控制策略实现对储能电池本体的有效管控，保证整个电池储能单元的安全可靠运行。同时BMS可以通过自身的通信接口、模拟&#x2F;数字输入输入接口与外部其他设备（PCS、EMS、消防系统等）进行信息交互，形成整个储能电站内各子系统的联动控制，确保电站安全、可靠、高效并网运行。</p>
<h2 id="2-架构"><a href="#2-架构" class="headerlink" title="2)架构"></a><strong>2)架构</strong></h2><p>从拓扑架构上看，BMS根据不同项目需求分为了集中式（Centralized）和分布式（Distributed）两类。</p>
<p><img src="https://pic4.zhimg.com/80/v2-0a51d26841408dabee3a1dbb7feece37_1440w.webp" alt="img"></p>
<p>集中式BMS<br><strong>简单来说，集中式BMS将所有电芯统一用一个BMS硬件采集，适用于电芯少的场景。</strong><br>集中式BMS具有成本低、结构紧凑、可靠性高的优点，一般常见于容量低、总压低、电池系统体积小的场景中，如电动工具、机器人（搬运机器人、助力机器人）、IOT智能家居（扫地机器人、电动吸尘器）、电动叉车、电动低速车（电动自行车、电动摩托、电动观光车、电动巡逻车、电动高尔夫球车等）、轻混合动力汽车。<br>集中式架构的BMS硬件可分为高压区域和低压区域。高压区域负责进行单体电池电压的采集、系统总压的采集、绝缘电阻的监测。低压区域包括了供电电路、CPU电路、CAN通信电路、控制电路等。<br>随着乘用车动力电池系统不断向高容量、高总压、大体积的方面发展，在插电式混动、纯电动车型上主要还是采用分布式架构的BMS。<br>分布式BMS<br>目前行业内分布式BMS的各种术语五花八门，不同的公司，不同的叫法。动力电池BMS大多是主从两层架构：</p>
<p><img src="https://pic2.zhimg.com/80/v2-97a3ec1b1bec6689f9bac1ae9a9a8015_1440w.webp" alt="img"></p>
<p>储能BMS则因为电池组规模庞大，大多都是<strong>三层架构，</strong>在从控、主控之上，还有一层总控<strong>。</strong></p>
<p><img src="https://pic4.zhimg.com/80/v2-89bdd073dde0b2f0aae4813193037c83_1440w.webp" alt="img"></p>
<p>就像电池构成电池簇、电池簇构成电堆；三层BMS中也遵循这样层层向上的规律：</p>
<ul>
<li><p>从控：电池单体管理单元：BMU（battery module unit，大多都叫BMU，也有的叫CSC&#x2F;CSU），采集单体电池信息。</p>
</li>
<li><ul>
<li>监测电池单体电压、温度</li>
<li>包内电池均衡</li>
<li>信息上送</li>
<li>热管理</li>
<li>异常报警</li>
</ul>
</li>
<li><p>主控：电池簇管理单元：BCU（battery cluster unit，也有高压管理单元HVU、BCMU等等），负责收集BMU信息，并采集电池簇信息。</p>
</li>
<li><ul>
<li>电池簇电流采集，总电压采集，漏电检测</li>
<li>电池状态异常时断电保护</li>
<li>在BMS的管理下可单独完成容量标定和SOC标定，作为后续充放电管理的依据</li>
</ul>
</li>
<li><p>总控：电池阵列管理单元：BAU（battery array unit，也有叫BAMS、MBMS等等），对整个储能电池堆的电池进行集中管理。向下连接各个电池簇管理单元，向上与其他设备信息交互，反馈电池阵列的运行状态信息。</p>
</li>
<li><ul>
<li>电池阵列的充放电管理</li>
<li>BMS系统自检与故障诊断报警</li>
<li>电池组故障诊断报警</li>
<li>电池阵列内各种异常及故障情况的安全保护</li>
<li>与PCS、EMS等其他设备通信</li>
<li>数据存储、传输与处理</li>
</ul>
</li>
</ul>
<p><strong>单体电池管理层：</strong>负责采集电池的各种单体信息（电压、温度），计算分析电池的SOC和SOH，实现对单体电池的主动均衡，并将单体异常信息上传给电池组单元层BCMU。通过CAN对外通信，通过菊花链相互连接。<br><strong>电池组管理层：</strong>负责收集BMU上传的各种单体电池信息，采集电池组的各种信息（组电压、组温度）、电池组充电放电电流等，计算分析电池组的SOC和SOH，并将所有信息上传给电池簇单元层BAMS。通过CAN对外通信，通过菊花链相互连接。<br><strong>电池簇管理层：</strong>负责收集BCMU上传的各种电池信息，并将所有信息以RJ45接口上传给储能监控EMS系统；与PCS通信，将电池的相关异常信息发送给PCS（CAN或RS485接口），且配有硬件干节点对PCS。此外进行电池系统BSE(Battery State Estimate)评估、电系统状态检测、接触器管理、热管理、运行管理、充电管理、诊断管理、以及执行对内外通信网络的管理。通过CAN与下级进行通信。</p>
<h2 id="3-BMS是做什么的？"><a href="#3-BMS是做什么的？" class="headerlink" title="3)BMS是做什么的？"></a>3)BMS是做什么的？</h2><p>BMS的功能有很多，最核心的、我们最关注的，无非就是三个方面：<br>一个是<strong>感知（状态管理）</strong>，感知电池的状态，这就是BMS的基本功能，不管测电压、测电阻、测温度，最后就是一个感知电池状态，我们想知道电池状态什么样，现在也多少能量，多少容量，现在健康状态怎么样，现在有多少功率，现在安全状态怎么样，这就是感知。<br>第二个就是<strong>管理（均衡管理）</strong>，有人说BMS是电池的保姆，那这种保姆就要去管理，管理什么，就要把这个电池尽可能用好它，最基本就是均衡管理、热管理。<br>第三个是<strong>保护（安全管理）</strong>，保姆还要做一个工作，如果电池出了一些状态，它要去进行保护并向上报警。<br>当然最后附带一块<strong>通信管理，</strong>通过一定的规约在系统内，或系统外传递数据。<br>BMS还有很多其他功能，例如运行控制、绝缘监测、热管理等等，这里不展开介绍。</p>
<p><img src="https://pic4.zhimg.com/80/v2-40edbc5b6792887d46879493d6e78b83_1440w.webp" alt="img"></p>
<p>3.1 <strong>感知——测量与估算</strong><br>BMS的基本功能就是对电池参数的测量和估算，包括电压、电流、温度等基本参数、状态，以及SOC、SOH等电池状态数据的计算。动力电池领域还涉及SOP（state of power）、SOE（state of energy）的计算，这里不展开讲，着重讲前两个应用更广泛的数据。</p>
<p>电芯测量<br>1)基本信息测量：电池管理系统有着最基本功能就是测量电池单体的<strong>电压，电流和温度</strong>，这是所有电池管理系统顶层计算、控制逻辑的基础 。<br>2)绝缘电阻检测：电池管理系统内需要对整个电池系统和高压系统进行绝缘检测。<br>3)高压互锁检测(HVIL)：用来确认整个高压系统的完整性的，当高压系统回路完整性受到破坏的时候启动安全措施。</p>
<p>SOC计算<br>SOC，指State of Charge，电池剩余容量。简单来说，就是电池还剩下多少电。<br>SOC是BMS中最重要的参数，因为其它一切都是以SOC为基础的，所以它的精度和鲁棒性（也叫纠错能力）极其重要。如果没有精确的SOC，再多的保护功能也无法使BMS正常工作，因为电池会经常处于被保护状态，更无法延长电池的寿命。<br>目前主流的SOC估算方法有开路电压法、电流积分法、卡尔曼滤波法和神经网络法。比较常用的是前两种。后两种涉及积分啊模型啊人工智能啊等等高尖深的知识，这里不详细介绍。<br>实际应用中常常是多种算法混合使用，根据电池充放电状态的不同采用不同算法。<br>开路电压法<br>开路电压法其原理是利用电池在长时间静置的条件下，开路电压与SOC存在相对固定的函数关系，从而根据开路电压来估算SOC。以前常用的铅蓄电池电动自行车就是使用这种方法估算SOC。开路电压法简单便捷，但也存在很多缺点：<br>\1. 电池须经过长期静置，否则开路电压短时间内很难稳定；<br>\2. 电池存在电压平台，特别是磷酸铁锂电池，在SOC30%-80%期间，端电压和SOC曲线近似为直线；<br>\3. 电池处于不同温度或不同寿命时期，尽管开路电压一样，但实际上的SOC差别可能较大；<br>如下图，我们在使用这种电动自行车，假如当前SOC显示100%，在加速启动下电压下降，电量可能显示80%，停止加速时电压回升，电量又会跳回100%。所以我们的小电车电量显示不准，停下来有电开起来就没电了，可能不是电池的问题，而是BMS的SoC算法太简单的锅。</p>
<p><img src="https://pic1.zhimg.com/80/v2-5c7256a552dc71c8a88d166f208dd3dc_1440w.webp" alt="img"></p>
<p>安时积分法<br>安时积分法，直接通过SOC的定义来实时计算SOC值。</p>
<p><img src="https://cydmacro.gitee.io/myblog/img/v2-dba0569ba3dacd3ca02997b188bc0750_1440w-20230707101418348.webp" alt="img"></p>
<p>在已知SOC初始值的前提下，只要可以测量出电池的电流（式中放电电流为正），通过电流积分，可以准确地计算出电池电量的变化情况，进而得到剩余电量SOC。<br>该方法在短时间内的估计结果比较可靠，但由于电流传感器的测量误差以及电池容量的逐渐衰退，长时间的电流积分会引入一定的偏差。所以其一般与开路电压法估计初始值配合，用于精度要求不高的SOC估计，也可以与卡尔曼滤波法配合，用于短时的SOC预测。<br>SOC(StateOfCharge)属于BMS核心控制算法，表征当前的剩余容量状态，主要通过安时积分法和EKF(扩展卡尔曼滤波)算法，并结合修正策略(如开路电压修正，充满修正，充电末端修正，不同温度及SOH下的容量修正等)。安时积分法在保证电流采集精度条件下比较可靠，但鲁棒性不强，由于存在误差累计必须结合修正策略，而EKF鲁棒性较强，但算法比较复杂，实现难度大。国内主流厂家一般常温可以做到精度6%以内，在高低温和电池衰减时的估算是难点。<br>SOC修正<br>由于电流波动会导致SOC估算偏差较大，计算出的SOC可能不够可靠，估算时还需要结合各种各样的修正策略。</p>
<p>SOH计算<br>SOH，指State of Health，电池健康状态（或电池劣化程度）。主要表征当前电池的健康状态，为0-100%之间数值，一般认为低于80%以后电池便不可再用。可以用电池容量或内阻变化来表示，用容量时即通过电池运行过程数据估算出当前电池的实际容量，与额定容量的比值即为SOH。准确的SOH会提高电池衰减时其他模块的估算精度。</p>
<p>对SOH的定义，在业界有两种不同的定义方式：<br><strong>基于容量衰减的SOH定义（Capacity Fade）</strong><br>锂离子电池在使用过程中，电池内部活性物质逐渐减少，内阻增加，容量衰减，因此可以通过电池容量来估计SOH。电池的健康状态表述为电池当前容量与初始容量的比值，其SOH定义为：<br>SOH&#x3D;(C_standard-C_fade)&#x2F;C_standard ×100%<br>式中：C_fade为电池已损失容量；C_standard为标称容量。<br>IEEE标准1188-1996中规定，动力电池容量能力下降到80%时，就应该更换电池。因此通常我们认为电池SOH低于80%后便不可用。<br><strong>基于功率衰减的SOH定义（Power Fade）</strong><br>几乎所有类型的电池的老化都会导致电池内阻的增加，电池的内阻越高，其可用的功率就越小。因此，可以用功率的衰减来估计SOH。</p>
<p><strong>3.2 管理——均衡技术</strong><br>每个电池都有自己的“个性”<br>要说均衡，得先从电池谈起。即使是同一厂家同一批次生产的电池，也都有自己的生命周期、自己的“个性”——<strong>每个电池的容量不可能完全一致</strong>。这种不一致性有两类原因：</p>
<ul>
<li>一类是电芯生产的不一致性</li>
<li>一类是电化学反应的不一致性</li>
</ul>
<p><strong>生产不一致性</strong><br>生产不一致性很好理解，比如在生产过程中，隔膜不一致，阴极，阳极材料的不一致，造成整体电池容量的不一致，标准是一个50AH的电池，可能一个变成了49AH，一个变成了51AH。<br><strong>电化学不一致性</strong><br>电化学的不一致性就是在电池充放电的过程中，即使两个电芯的生产加工一模一样，但是热环境在电化学反应的过程中是永远不可能一致的，比如做电池模组的时候，周围一圈温度肯定比中间要低。这就造成充电量、放电量的长久不一致，这也就造成电芯容量不一致；以及电芯SEI膜在长时间充放电电流不一致的时候，SEI膜衰老也就不一致。<br>*SEI膜：“固体电解质界面膜”( solid electrolyte interface)，在液态锂离子电池首次充放电过程中，电极材料与电解液在固液相界面上发生反应，形成的覆盖于电极材料表面的钝化层。SEI膜是电子绝缘体却是锂离子的优良导体，在保护电极的同时不影响电池功能，SEI膜衰老对电池健康有很大影响。<br>所以电池组非一致性（或者离散性）是电池运行的一种必然表现。</p>
<p>为什么需要均衡<br>各个电池不一样就不一样，为什么非要想办法让他们一样呢？因为<strong>不一致性会影响电池组的性能</strong>。<br>串联成组的电池组遵循木桶短板效应：<strong>在串联成组的电池组系统中，整个电池组系统的容量由容量最小的单体决定。</strong><br>假如我们有一个3节电池构成的电池组：</p>
<p><img src="https://pic4.zhimg.com/80/v2-0fa8d4ae26538da527a5f23b244162ef_1440w.webp" alt="img"></p>
<p>我们知道过充过放对电池的伤害很大。所以当充电时电池B已经充满，或者放电时电池B的SoC已经很低，就需要停止充放电，保护电池B，电池A和电池C的电量就无法被充分利用。<br>这就导致：</p>
<ol>
<li><strong>电池组实际可用容量降低：</strong>电池A和C本来可以使用的容量，现在为了照顾B而无处发力，就像二人三足把高个和矮个绑在一起，高个的步子就无法迈得很大。</li>
<li><strong>电池组寿命降低：</strong>步幅小了，需要走的步数就多了，腿就更累；容量降低了，需要充放电的循环次数就增加了，电池的衰减也更大。比如单个电芯在100%DoD的情况下能达到4000次循环，但实际使用中无法达到100%，循环次数一定达不到4000次。</li>
</ol>
<p>*DoD， Depth of discharge，放电深度，表示电池放电量与电池额定容量的百分比。<br>电池的不一致性导致了电池组的性能降低，电池模组的规模较大时，多串电池串联，较大的单体电压差将造成整个箱体的容量下降，串联电池越多，其损失的容量越多。而我们在应用中，尤其是储能系统应用中，有两个重要的要求：<br>第一个<strong>长寿命</strong>，长寿命的电池可以大大降低运维成本，储能系统对电池组寿命提出了很高的要求，国内大部分在提15年的寿命，如果一年算300次循环，15年就是4500次，这个要求还是非常高的。我们需要每一个电池尽可能发挥应有的寿命，使得整个电池组总的寿命尽可能达到设计的寿命，减少电池离散对电池组寿命的影响。<br>第二个<strong>深循环</strong>，尤其是在削峰填谷应用场景，多放出一度电多一分收益，也就是说我们会做80%DoD或90%DoD，储能系统当中用到这个深度的时候，尾部放电时候电池的离散性就会表现出来，所以为了保证电池组在深充深放条件下每个单体容量的充分释放，必须要求储能BMS具有很强的均衡管理能力，抑制电池单体间一致性的出现。<br>这两个要求，正好与电池不一致性相悖，我们要达到更高效的电池组应用，就势必需要更有效的均衡技术，来削弱电池不一致性的影响。</p>
<p>均衡技术<br>电池均衡技术，就是想办法让容量不一样的电池变得一样。常见的均衡方式有两种：能量耗散型单向均衡（被动均衡）和能量转移型双向均衡（主动均衡）。</p>
<p><strong>（1）被动均衡</strong><br>被动均衡原理是在每串电池上并联一个可以开关的放电电阻，BMS控制放电电阻对电压较高的单体放电，电能以热的形式<strong>耗散</strong>掉。例如当电池B快充满时，打开开关让电池B上的电阻放热，让B多余的电能以热能形式耗散，再继续充电，直到A和C也充满。</p>
<p>这种方式<strong>只能对电压高的单体放电，不能对容量低的单体进行补充电</strong>，受放电电阻功率限制，均衡电流一般较小（小于1A）。<br>被动均衡的优点是成本低和电路设计简单；而缺点为是以最低电池残余量为基准进行均衡，无法增加残量少的电池的容量，及均衡电量100％以热量形式被浪费。</p>
<p><strong>（2）主动均衡</strong><br>多串的电池之间通过算法借助储能元器件将电压高的电芯的能量转移给低电压电芯，对电压较高的电池放电，放出的能量用来对电压较低的单体进行充电，能量主要是<strong>转移</strong>而不是耗散。<br>这样，在充电时，让电压最先达到100%的电池B自放电给A和C，三个电池再一起充满；放电时也是一样，当电池B剩余电量过低时，让A和C给B“充电”，让电芯B不会那么快触及停止放电的SOC阈值。</p>
<p><img src="https://pic3.zhimg.com/80/v2-83b1db5542db753de0034f4eda644636_1440w.webp" alt="img"></p>
<p><strong>主动均衡技术主要特点</strong><br>（1）均衡削高补低，提高电池组的使用效率：在充放电及静止过程中，均可以对电压高的电池放电，对电压低的电池充电；<br>（2）低损耗能量转移：能量主要是转移，而非单纯的损耗，提高了电能的利用效率；<br>（3）均衡电流较大：一般均衡电流在1～10A，均衡更快；<br>主动均衡需要配置相应电路和储能器件，体积大，成本上升，这两个条件一起决定了主动均衡不容易推广应用。<br>另外，主动均衡的充放过程，无形中增加了电池的循环次数，对于本身需要充放电才能实现均衡的电芯，额外的工作量可能造成其超越一般电芯的老化，进而造成与其他电芯更大的性能差距。</p>
<p>有专家认为，上面的两个表述应该对应于耗散型均衡和非耗散型均衡。而主动还是被动，应该取决于触发均衡过程的事件，系统到达那个状态不得不进行的就是被动。如果是人为设定，在可以不均衡的时候设置了均衡程序，才称为主动均衡。<br>例如，放电放到最后，电压最低的电芯已经到达了放电截止电压，而其他电芯还存有电量。这时候，系统为了把尽量多的电都放掉，于是把高能量电芯的电部分的转移给低能量的电芯，使得放电过程又进行下去，直到把全部电量放干净，这是被动均衡过程。如果在放电至电量还有40%的时候，系统预计到，在放电截止的时候会出现不均衡，于是起动均衡过程，这才是主动均衡。</p>
<p>主动均衡分为集中式和分散式。集中式的均衡方法就是从整组的电池获取能量，然后通过电能转化装置向能量少的电池补充能量，分散式的均衡是在相邻的电池之间存在一个储能环节，这个储能环节可以是电感，也可以是电容，这样就可以让能量在相邻的电池之间流动。</p>
<p>当前的均衡控制策略中，有以单体电压为控制目标参数的，也有人提出应该用SOC作为均衡控制目标参数。以单体电压为例。</p>
<ul>
<li>首先设定一对启动和结束均衡的阈值：例如一组电池中，单体电压极值与这组电压平均值的差值达到50mV时启动均衡，5mV结束均衡。</li>
<li>BMS按照固定的采集周期采集单体电压，计算平均值，再计算每个单体电压与均值的差值；</li>
<li>如果最大的一个差值达到了50mV，BMS就需要启动均衡程序；</li>
<li>在均衡过程中持续步骤2，直到差值都小于5mV，结束均衡。</li>
</ul>
<p>需要注意的是，不一定所有BMS都是这个步骤，后续策略根据均衡方式的不同可能有所不同。</p>
<p>均衡技术与电池种类也有一定的关系，一般认为LFP更加适合主动均衡，三元电池适合被动均衡。</p>
<p>BMS进行白热化竞争的阶段，大部分都是靠成本与可靠性来支撑，目前主动均衡的实验验证尚未实现，功能安全的等级想要往ASIL-C, ASIL-D走，付出的代价相当之大，所以目前的大公司对于主动均衡研究，都处于慎重态度，甚至有一些大厂，要取消均衡模块，所有的均衡在外部进行，就类似与燃油车的保养，每开多少公里，去4S进行一次外部的均衡，这样整车BMS成本降低，而且对应的4S店也有收益，属于多方共赢，所以个人理解，这个可能会成为一个趋势！</p>
<p><strong>3.3 保护——故障诊断和报警</strong><br>BMS监控与电气系统硬件匹配，针对电池的不同表现情况，区分为不同的故障等级（轻微故障、严重故障、致命故障），并且在不同故障等级情况下采取不同的处理措施：警告，限功率或直接切断高压。故障包括数据采集及合理性故障、电气故障(传感器和执行器)、通讯故障及电池状态故障等。<br>一个常见的例子是电池过热时，BMS根据采集上来的电池温度，判断出电池过热，随后控制此电池的电路断开，进行过热保护，并向EMS等管理系统发出告警。</p>
<p><img src="https://cydmacro.gitee.io/myblog/img/v2-de7e77c275f75439aa641cbe26926cb9_1440w-20230707101457882.webp" alt="img"></p>
<p><strong>3.4 通信</strong><br>BMS的正常工作离不开BMS的通信功能，无论是进行电池管理时控制电池，还是向外传输电池状况、接受控制指令，都需要稳定的通信。<br>在动力电池系统中，BMS一端与电池相连，另一端又与整车的控制及电子系统相连接，大环境都采用<strong>CAN协议</strong>，只是按照电池包内部组件之间使用内部CAN，电池包与整车之间使用整车CAN做区分。<br>相比之下，储能BMS与内部的通讯基本都采用CAN协议，但其与外部通讯（外部主要指储能电站调度系统PCS）往往采用互联网协议格式<strong>TCP&#x2F;IP协议</strong>和<strong>modbus协议</strong>。</p>
<h2 id="4-储能BMS"><a href="#4-储能BMS" class="headerlink" title="4)储能BMS"></a>4)储能BMS</h2><p>储能BMS厂商一般从动力电池BMS发展而来，因此，很多设计和名词有历史沿革<br>比如动力电池里一般分为 BMU（Battery Monitor Unit） 和BCU（Battery Control Unit）前者采集，后者控制。<br>因为电芯是一个电化学的过程，多个电芯组成一个电池，由于每个电芯特性，无论制造多精密，随使用时间，环境，各个电芯都会存在误差与不一致的地方，故电池管理系统，就是通过有限的参数，去评估当前电池的状态，有点像中医看病，通过表征，看你得了啥病，不是西医，需要一些理化分析，人体的理化分析就像电池的电化学特性，可以通过大型试验仪器去测量，但是嵌入式系统很难去评估电化学的一些指标，故BMS就是一个老中医。</p>
<p><strong>4.1储能BMS三层架构</strong><br>储能系统由于电池单体众多，为了节约成本，一般BMS分层实现，有2层和3层之分。目前主流是三层：总控&#x2F;主控&#x2F;从控。</p>
<p><img src="https://pic4.zhimg.com/80/v2-89bdd073dde0b2f0aae4813193037c83_1440w.webp" alt="img"></p>
<p><strong>4.2储能BMS详细说明</strong></p>
<p><img src="https://cydmacro.gitee.io/myblog/img/v2-6c804af93c463e650b6844cd51a5ac35_1440w.webp" alt="img"></p>
<h2 id="5-现状与未来趋势"><a href="#5-现状与未来趋势" class="headerlink" title="5)现状与未来趋势"></a>5)现状与未来趋势</h2><p>入局BMS制造的厂商有几类：<br>第一类是动力电池BMS中最具主导能力的终端用户——车厂，事实上国外BMS制造实力最强的也就是车厂，如通用、特斯拉等；国内有比亚迪、华霆动力等。<br>第二类是电池厂，包含电芯厂商与做pack的厂商，如三星、宁德时代、欣旺达、德赛电池、拓邦股份、北京普莱德等；<br>第三类专业的BMS制造商，此类厂商多有多年的电力电子技术积累，有高校背景或相关企业背景的研发团队，如亿能电子、杭州高特电子、协能科技、科工电子等企业。<br>与动力电池的 BMS 主要由终端车厂主导不同，目前看来储能电池的终端用户没有加入 BMS 研发与制造的需求与具体行动，也不大可能花费大量资金与精力开发大型电池管理系统，所以可以认为储能电池 BMS 行业缺乏一个占据了绝对优势的重要参与者，给电池厂以及专注做储能 BMS 的厂商留下了巨大的发展空间与想象空间。如果储能的市场一旦确立，将给予电池厂与专业 BMS 生产厂商以非常大的发挥空间与较少的竞争阻力。<br>当前专注于储能BMS开发的专业BMS厂商还比较少，主要原因是储能市场还处在初期，市场对于储能未来的发展还存在很大的疑虑，因此绝大部分厂商都没有进行储能相关BMS的开发。在实际的商业环境中，也有厂家购买电动汽车电池BMS用作储能电池的BMS用，相信在未来专业电动汽车的 BMS 生产厂商也极有可能成为大规模储能项目使用的BMS供应商的重要组成部分。</p>
<p>现阶段，<strong>各个储能系统供应商提供的BMS缺乏统一标准</strong>。不同厂家对BMS的设计、定义都不同，而且根据各家适配电池的不同，采用的SOX算法、均衡技术、上传的通信数据内容可能也各不相同。在BMS的实际应用中，这样的差异会增加应用成本，不利于产业发展。因此，以后BMS的标准化、模块化也将是一个重要的发展方向。</p>
<p>全文完</p>
<p>参考：<br>BMS电池管理系统由浅入深全方位解析<br>电池管理系统BMS中SOC算法浅析<br>电池SOC估计浅谈<br>锂电池保护板的主动均衡和被动均衡的区别 - 基准&#x2F;监控&#x2F;保护电路<br>一文读懂动力电池BMS均衡功能<br>电力储能系统用BMS与动力电池系统BMS解析</p>
 
      <!-- reward -->
      
      <div id="reword-out">
        <div id="reward-btn">
          打赏
        </div>
      </div>
      
    </div>
    

    <!-- copyright -->
    
    <div class="declare">
      <ul class="post-copyright">
        <li>
          <i class="ri-copyright-line"></i>
          <strong>版权声明： </strong>
          
          本博客所有文章除特别声明外，著作权归作者所有。转载请注明出处！
          
        </li>
      </ul>
    </div>
    
    <footer class="article-footer">
       
<div class="share-btn">
      <span class="share-sns share-outer">
        <i class="ri-share-forward-line"></i>
        分享
      </span>
      <div class="share-wrap">
        <i class="arrow"></i>
        <div class="share-icons">
          
          <a class="weibo share-sns" href="javascript:;" data-type="weibo">
            <i class="ri-weibo-fill"></i>
          </a>
          <a class="weixin share-sns wxFab" href="javascript:;" data-type="weixin">
            <i class="ri-wechat-fill"></i>
          </a>
          <a class="qq share-sns" href="javascript:;" data-type="qq">
            <i class="ri-qq-fill"></i>
          </a>
          <a class="douban share-sns" href="javascript:;" data-type="douban">
            <i class="ri-douban-line"></i>
          </a>
          <!-- <a class="qzone share-sns" href="javascript:;" data-type="qzone">
            <i class="icon icon-qzone"></i>
          </a> -->
          
          <a class="facebook share-sns" href="javascript:;" data-type="facebook">
            <i class="ri-facebook-circle-fill"></i>
          </a>
          <a class="twitter share-sns" href="javascript:;" data-type="twitter">
            <i class="ri-twitter-fill"></i>
          </a>
          <a class="google share-sns" href="javascript:;" data-type="google">
            <i class="ri-google-fill"></i>
          </a>
        </div>
      </div>
</div>

<div class="wx-share-modal">
    <a class="modal-close" href="javascript:;"><i class="ri-close-circle-line"></i></a>
    <p>扫一扫，分享到微信</p>
    <div class="wx-qrcode">
      <img src="//api.qrserver.com/v1/create-qr-code/?size=150x150&data=https://blog.cydh.top/2023/07/07/%E7%94%B5%E6%B1%A0%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9FBMS%E7%9F%A5%E8%AF%86%E4%B8%8E%E5%8A%9F%E8%83%BD%E5%85%A5%E9%97%A8%E7%AF%87/" alt="微信分享二维码">
    </div>
</div>

<div id="share-mask"></div>  
    </footer>
  </div>

   
  <nav class="article-nav">
    
      <a href="/2023/07/28/docker%E5%AE%89%E8%A3%85clicHouse/" class="article-nav-link">
        <strong class="article-nav-caption">上一篇</strong>
        <div class="article-nav-title">
          
            docker安装clicHouse
          
        </div>
      </a>
    
    
      <a href="/2023/07/06/springboot%E6%95%B4%E5%90%88mybatis%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/" class="article-nav-link">
        <strong class="article-nav-caption">下一篇</strong>
        <div class="article-nav-title">springboot整合mybatis源码分析</div>
      </a>
    
  </nav>

  
   
  
   
    <script src="https://cdn.staticfile.org/twikoo/1.4.18/twikoo.all.min.js"></script>
    <div id="twikoo" class="twikoo"></div>
    <script>
        twikoo.init({
            envId: ""
        })
    </script>
 
</article>

</section>
      <footer class="footer">
  <div class="outer">
    <ul>
      <li>
        Copyrights &copy;
        2015-2023
        <i class="ri-heart-fill heart_icon"></i> cyd
      </li>
    </ul>
    <ul>
      <li>
        
      </li>
    </ul>
    <ul>
      <li>
        
        
        <span>
  <span><i class="ri-user-3-fill"></i>访问人数:<span id="busuanzi_value_site_uv"></span></span>
  <span class="division">|</span>
  <span><i class="ri-eye-fill"></i>浏览次数:<span id="busuanzi_value_page_pv"></span></span>
</span>
        
      </li>
    </ul>
    <ul>
      
    </ul>
    <ul>
      
    </ul>
    <ul>
      <li>
        <!-- cnzz统计 -->
        
        <script type="text/javascript" src='https://s9.cnzz.com/z_stat.php?id=1278069914&amp;web_id=1278069914'></script>
        
      </li>
    </ul>
  </div>
</footer>    
    </main>
    <div class="float_btns">
      <div class="totop" id="totop">
  <i class="ri-arrow-up-line"></i>
</div>

<div class="todark" id="todark">
  <i class="ri-moon-line"></i>
</div>

    </div>
    <aside class="sidebar on">
      <button class="navbar-toggle"></button>
<nav class="navbar">
  
  <div class="logo">
    <a href="/"><img src="/images/ayer-side.svg" alt="风舞神者"></a>
  </div>
  
  <ul class="nav nav-main">
    
    <li class="nav-item">
      <a class="nav-item-link" href="/">主页</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/archives">归档</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/categories">分类</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/tags">标签</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/tags/%E6%97%85%E8%A1%8C/">旅行</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" target="_blank" rel="noopener" href="http://shenyu-vip.lofter.com">摄影</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/friends">友链</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/2019/about">关于我</a>
    </li>
    
  </ul>
</nav>
<nav class="navbar navbar-bottom">
  <ul class="nav">
    <li class="nav-item">
      
      <a class="nav-item-link nav-item-search"  title="搜索">
        <i class="ri-search-line"></i>
      </a>
      
      
      <a class="nav-item-link" target="_blank" href="/atom.xml" title="RSS Feed">
        <i class="ri-rss-line"></i>
      </a>
      
    </li>
  </ul>
</nav>
<div class="search-form-wrap">
  <div class="local-search local-search-plugin">
  <input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
  <div id="local-search-result" class="local-search-result"></div>
</div>
</div>
    </aside>
    <div id="mask"></div>

<!-- #reward -->
<div id="reward">
  <span class="close"><i class="ri-close-line"></i></span>
  <p class="reward-p"><i class="ri-cup-line"></i>请我喝杯咖啡吧~</p>
  <div class="reward-box">
    
    <div class="reward-item">
      <img class="reward-img" src="/images/alipay.jpg">
      <span class="reward-type">支付宝</span>
    </div>
    
    
    <div class="reward-item">
      <img class="reward-img" src="/images/wechat.jpg">
      <span class="reward-type">微信</span>
    </div>
    
  </div>
</div>
    
<script src="/js/jquery-3.6.0.min.js"></script>
 
<script src="/js/lazyload.min.js"></script>

<!-- Tocbot -->
 
<script src="/js/tocbot.min.js"></script>

<script>
  tocbot.init({
    tocSelector: ".tocbot",
    contentSelector: ".article-entry",
    headingSelector: "h1, h2, h3, h4, h5, h6",
    hasInnerContainers: true,
    scrollSmooth: true,
    scrollContainer: "main",
    positionFixedSelector: ".tocbot",
    positionFixedClass: "is-position-fixed",
    fixedSidebarOffset: "auto",
  });
</script>

<script src="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.js"></script>
<link
  rel="stylesheet"
  href="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.css"
/>
<script src="https://cdn.staticfile.org/justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js"></script>

<script src="/dist/main.js"></script>

<!-- ImageViewer -->
 <!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>

    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">

        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>

        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">

            <div class="pswp__top-bar">

                <!--  Controls are self-explanatory. Order can be changed. -->

                <div class="pswp__counter"></div>

                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

                <button class="pswp__button pswp__button--share" style="display:none" title="Share"></button>

                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                        <div class="pswp__preloader__cut">
                            <div class="pswp__preloader__donut"></div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div>
            </div>

            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>

            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>

            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>

        </div>

    </div>

</div>

<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/default-skin/default-skin.min.css">
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.js"></script>
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe-ui-default.min.js"></script>

<script>
    function viewer_init() {
        let pswpElement = document.querySelectorAll('.pswp')[0];
        let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))

        $imgArr.forEach(($em, i) => {
            $em.onclick = () => {
                // slider展开状态
                // todo: 这样不好，后面改成状态
                if (document.querySelector('.left-col.show')) return
                let items = []
                $imgArr.forEach(($em2, i2) => {
                    let img = $em2.getAttribute('data-idx', i2)
                    let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
                    let title = $em2.getAttribute('alt')
                    // 获得原图尺寸
                    const image = new Image()
                    image.src = src
                    items.push({
                        src: src,
                        w: image.width || $em2.width,
                        h: image.height || $em2.height,
                        title: title
                    })
                })
                var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
                    index: parseInt(i)
                });
                gallery.init()
            }
        })
    }
    viewer_init()
</script> 
<!-- MathJax -->

<!-- Katex -->

<!-- busuanzi  -->
 
<script src="/js/busuanzi-2.3.pure.min.js"></script>
 
<!-- ClickLove -->

<!-- ClickBoom1 -->

<!-- ClickBoom2 -->

<!-- CodeCopy -->
 
<link rel="stylesheet" href="/css/clipboard.css">
 <script src="https://cdn.staticfile.org/clipboard.js/2.0.10/clipboard.min.js"></script>
<script>
  function wait(callback, seconds) {
    var timelag = null;
    timelag = window.setTimeout(callback, seconds);
  }
  !function (e, t, a) {
    var initCopyCode = function(){
      var copyHtml = '';
      copyHtml += '<button class="btn-copy" data-clipboard-snippet="">';
      copyHtml += '<i class="ri-file-copy-2-line"></i><span>COPY</span>';
      copyHtml += '</button>';
      $(".highlight .code pre").before(copyHtml);
      $(".article pre code").before(copyHtml);
      var clipboard = new ClipboardJS('.btn-copy', {
        target: function(trigger) {
          return trigger.nextElementSibling;
        }
      });
      clipboard.on('success', function(e) {
        let $btn = $(e.trigger);
        $btn.addClass('copied');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-checkbox-circle-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPIED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-checkbox-circle-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
      clipboard.on('error', function(e) {
        e.clearSelection();
        let $btn = $(e.trigger);
        $btn.addClass('copy-failed');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-time-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPY FAILED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-time-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
    }
    initCopyCode();
  }(window, document);
</script>
 
<!-- CanvasBackground -->

<script>
  if (window.mermaid) {
    mermaid.initialize({ theme: "forest" });
  }
</script>


    
    

  </div>
</body>

</html>